<?php

/**
 * Одна оценка
 */
class grade {
	
	/**
	 * Числовое значение оценки
	 * @var float
	 */
	private $grade_numeric = NULL;
	
	/**
	 * Шкала для оценок.
	 * Если не задана, то используется вариант по умолчанию
	 * @var array
	 */
	private $scale = NULL;
	
	/**
	 * @param int $grade_numeric Числовое значение оценки в интервале [-1;5]
	 */
	function __construct($grade_numeric, $scale = NULL) {
		$this->set_grade_numeric($grade_numeric);
		$this->set_scale($scale);
	}
	
	function set_grade_numeric($grade_numeric) {
		$this->grade_numeric = $grade_numeric;
	}
	
	function set_scale($scale) {
		$this->scale = $scale;
	}
	
	/**
	 * Проверяет, плохая ли оценка
	 */
	function is_bad() {
		return (0 <= $this->grade_numeric && $this->grade_numeric < 2.5) ? true : false;
	}
	
	/**
	 * Проверяет, хорошая ли оценка
	 */
	function is_good() {
		return ($this->grade_numeric >= 4) ? true : false;
	}
	
	/**
	 * Возвращает текст оценки
	 * @param string $type Тип оценки (простая или итоговая)
	 * @return string
	 */
	function get_grade_text($type = 'simple') {
		if (empty($this->grade_numeric)) {
			return '';
		}
		
		if (! isset($this->scale)) {
			if (round($this->grade_numeric) == 0) {
				return 'н/а';
			} else if (round($this->grade_numeric) == -1) {
				return 'осв';
			} else {
				if ($type == 'simple') {
					return number_format($this->grade_numeric, 1);
				} else if ($type == 'total') {
					return number_format($this->grade_numeric, 0);
				}
			}
		} else {
			return $this->scale[round($this->grade_numeric) - 1]; // отнимается 1 для того, чтобы привести формат шкалы Moodle (от 1) в формат шкалы в PHP (от 0)
		}
	}
}


?>
